package com.cdeledu.thread4.c08;

/**
 * 存放提交的Runnable，该Runnable是一个BlockedQueue，并且有limit的限制
 * 
 * @author HP
 *
 */
public interface RunnableQueue {

	/**如果队列数量达到了上限，则会执行拒绝策略，否则会将runnable存放至队列中，同时唤醒take任务的线程
	 * @param runnable
	 */
	void offer(Runnable runnable);

	/**线程不断从队列中获取Runnable任务，当队列为空的时候工作线程会陷入阻塞，有可能在阻塞的过程中被中断，为了传递中断信号需要在catch语句块中将异常抛出以通知上游（InternalTask）
	 * @return
	 * @throws InterruptedException
	 */
	Runnable take() throws InterruptedException;

	/**返回runnableList的任务个数
	 * @return
	 */
	int size();

}
